import { defineMock } from './base'

export default defineMock([
  {
    url: 'dict/:code/options',
    method: ['GET'],
    body: ({ params }) => {
      const typeCode = params.code

      let list = null

      if (typeCode == 'gender') {
        list = [
          {
            value: '1',
            label: '男',
          },
          {
            value: '2',
            label: '女',
          },
          {
            value: '0',
            label: '未知',
          },
        ]
      }

      return {
        code: '00000',
        data: list,
        msg: '一切ok',
      }
    },
  },

  {
    url: 'dict/types/page',
    method: ['GET'],
    body: {
      code: '00000',
      data: {
        list: [
          {
            id: 1,
            name: '性别',
            code: 'gender',
            status: 1,
          },
          {
            id: 2,
            name: '状态',
            code: 'status',
            status: 1,
          },
        ],
        total: 2,
      },
      msg: '一切ok',
    },
  },

  {
    url: 'dict/page',
    method: ['GET'],
    body: {
      code: '00000',
      data: {
        list: [
          {
            id: 1,
            name: '男',
            value: '1',
            status: 1,
          },
          {
            id: 2,
            name: '女',
            value: '2',
            status: 1,
          },
          {
            id: 3,
            name: '未知',
            value: '0',
            status: 1,
          },
        ],
        total: 3,
      },
      msg: '一切ok',
    },
  },

  // 新增字典类型
  {
    url: 'dict/types',
    method: ['POST'],
    body({ body }) {
      return {
        code: '00000',
        data: null,
        msg: `新增字典类型${body.name}成功`,
      }
    },
  },

  // 获取字典类型表单数据
  {
    url: 'dict/types/:id/form',
    method: ['GET'],
    body: ({ params }) => {
      return {
        code: '00000',
        data: dictTypeMap[params.id],
        msg: '一切ok',
      }
    },
  },

  // 修改字典类型
  {
    url: 'dict/types/:id',
    method: ['PUT'],
    body({ body }) {
      return {
        code: '00000',
        data: null,
        msg: `修改字典类型${body.name}成功`,
      }
    },
  },

  // 删除字典类型
  {
    url: 'dict/types/:id',
    method: ['DELETE'],
    body({ params }) {
      return {
        code: '00000',
        data: null,
        msg: `删除字典类型${params.id}成功`,
      }
    },
  },

  // 新增字典
  {
    url: 'dict',
    method: ['POST'],
    body({ body }) {
      return {
        code: '00000',
        data: null,
        msg: `新增字典${body.name}成功`,
      }
    },
  },

  // 获取字典表单数据
  {
    url: 'dict/:id/form',
    method: ['GET'],
    body: ({ params }) => {
      return {
        code: '00000',
        data: dictMap[params.id],
        msg: '一切ok',
      }
    },
  },

  // 修改字典
  {
    url: 'dict/:id',
    method: ['PUT'],
    body({ body }) {
      return {
        code: '00000',
        data: null,
        msg: `修改字典类型${body.name}成功`,
      }
    },
  },

  // 删除字典
  {
    url: 'dict/:id',
    method: ['DELETE'],
    body({ params }) {
      return {
        code: '00000',
        data: null,
        msg: `删除字典${params.id}成功`,
      }
    },
  },
])

// 字典类型映射表数据
const dictTypeMap: Record<string, any> = {
  1: {
    id: 1,
    name: '性别',
    code: 'gender',
    status: 1,
    remark: null,
  },
  2: {
    id: 2,
    name: '状态',
    code: 'status',
    status: 1,
    remark: null,
  },
}

// 字典映射表数据
const dictMap: Record<string, any> = {
  1: {
    id: 1,
    typeCode: 'gender',
    name: '男',
    value: '1',
    status: 1,
    sort: 1,
    remark: null,
  },
  2: {
    id: 2,
    typeCode: 'gender',
    name: '女',
    value: '2',
    status: 1,
    sort: 2,
    remark: null,
  },
  3: {
    id: 3,
    typeCode: 'gender',
    name: '未知',
    value: '0',
    status: 1,
    sort: 1,
    remark: null,
  },
}
